備忘録:IISのCORS(クロスオリジンリソース共有)
ALOHA!
今日も、みなさんが笑顔になれますように。
IISのCORS(クロスオリジンリソース共有)で、思いっきりハマったので、備忘録的書きます。
僕は、独立してITの仕事しています。自社用や開発用にいくつかサーバを立てています。
最近は、自分のブログなどWordpressで作成したものも多いので、外部のレンタルサーバを利用させていただいています。
それでも、ASP.NETやASP.NET Coreなどで作成たものは、自社内のサーバに載せて公開しています。
これも、AzureかLinuxで動かすようにすれば良いのだけど...今後の課題です。
それで、めちゃくちゃお恥ずかしい話ですが、CORS(クロスオリジンリソース共有)のことは用語自体知りませんでした。ハマって、はじめて知りました。
CORSは、クロスサイトリクエストフォージェリ(CSRF)などのセキュリティ攻撃を防止するための仕組みです。
ものすごく単純化して簡単に言うと、他のサイトから参照されないようにしている仕組みです。
今まで、自分のサイトを他のサイトから参照したことがないから、この仕組みを知らなかったです。
今、ある仕組みを実装しようと思っています。
予約無しで、zoomでの占いを行おうと思っています。
そのために、リアルタイムで在籍中かどうかをブログなどで表示できるようにJavascriptからjsonファイルを読み込んで表示する仕組みです。
jsonファイルの生成は、自社のASP.NET Coreを使ってサイトで実装して、それを他のブログやWebから参照しようと思って作っていました。
ですが、まったく動かなかったです。
今の時代がすごいのが、話題のAIのChatGPTに、「WordpressでJavaScriptを使って、他のサイトのjsonを読み込んで表示するコード」とか聞きと書いてくれます!!
動かないときもありますが、それそのままで動くときもあって、最低でもサンプルコードとして参考になります。
それで、数日、悩んで、視点を変えて同じコードを、同じjsonファイル書き出しと同じサイトに実装したら動きました...
jsonファイルは、テキスト形式なので、ブラウザから開けます。
ですので、気が付かなかったですが、他サイトからの参照は出来ないことがわかって、調べてみてたどり着きました。
今まで、別サイトからの参照を行う必要性がなかったので、試したことがなくて知らなかったです。
解決方法ですが、いろいろな方法があります。
コードを書いて回避する方法もありますが、手っ取り早そうな方法です。
IIS CORS Moduleをダウンロードしてインストールします。
web.configファイルに設定を書いても良いのですが、IISの管理ツールから、構成エディターとhttp応答ヘッダで設定を書き足すのが簡単そうです。
<system.webServer>
<cors enabled=”false” failUnlistedOrigins=”false” />
<httpProtocol>
<customHeaders>
<add name=”Access-Control-Allow-Origin” value=”*”/>
<add name=”Access-Control-Allow-Methods” value=”*”/>
<add name=”Access-Control-Expose-Headers” value=”*”/>
<add name=”Access-Control-Allow-Headers” value=”*”/>
<add name=”Access-Control-Max-Age” value=”-1″/>
</customHeaders>
</httpProtocol>
</system.webServer>
無事に回避できました。
ですが、セキュリティとトレードオフなので、実装含めて検討する必要があります。
mahalo
最後まで読んでくださり本当にありがとうございます。
鑑定ご予約は、下記のFacebookメッセンジャーを使用してメッセージを頂くのがいちばん簡単だと思います。 https://m.me/yukihiro.tsuchiya/ Instagramからも簡単だと思います。 https://www.instagram.com/yukihiro.uranai/ また、下記のLINE公式アカウントで繋がってくださっても大丈夫です。 https://page.line.me/213rlnin?openQrModal=true お問い合わせフォームはこちらです。 お気軽にお問い合わせ下さい!
占いやカウンセリングを通して、メッセージをお伝えしていきます。
個人セッションは、携帯電話、LINE、Zoomで30分間6000円(延長10分間2000円)です。
お気軽にお問い合わせ下さい!ASP.NET Core, ChatGPT, CORS, CSRF, http応答ヘッダ, IIS, IIS CORS Module, Javascript, json, web.config, ZOOM, クロスオリジンリソース共有, クロスサイトリクエストフォージェリ, 構成エディター